import api from '../index'

/**
 * 主题大赛记录接口定义
 */
export interface Theme {
  themeId: number // 大赛活动ID
  themeName: string // 大赛活动名称
  themeNameEn: string
  userId: number // 用户ID
  themeTitle: string // 大赛主题（是校徽主题1，还是周边主题2）
  activityDescription: string // 活动说明
  activityDescriptionEn: string
  themeUrl: string // 图片地址
  createdAt: string // 创建时间，格式为 'YYYY-MM-DD HH:MM:SS'
  updatedAt: string // 修改时间，格式为 'YYYY-MM-DD HH:MM:SS'
  pageView: number // 浏览量
  expectStartTime: string // 预计开始时间，格式为 'YYYY-MM-DD HH:MM:SS'
  overTime: string // 结束时间，格式为 'YYYY-MM-DD HH:MM:SS'
  themeType: string // 大赛类型（0平台、1学校、3平台给学校）
  activityIntroduction: string // 活动介绍
  activityIntroductionEn: string // 活动介绍（英文）
}

export default {
  /**
   * 新增一条主题大赛记录
   * @param data - 需要新增的主题记录数据（不含主键）
   * @param data.themeName - 必填，大赛活动名称
   * @param data.userId - 必填，创建用户ID
   * @param data.themeTitle - 必填，大赛主题类型
   * @param data.activityDescription - 必填，活动说明
   * @param data.themeUrl - 必填，主题图片URL
   * @param data.expectStartTime - 必填，预计开始时间
   * @param data.overTime - 必填，结束时间
   * @param data.themeType - 必填，大赛类型
   * @returns 新增记录的ID
   */
  create: (data: Omit<Theme, 'themeId'>) =>
    api.post('/system/theme/add', data),

  /**
   * 删除指定的主题大赛记录
   * @param id - 主题记录唯一标识（themeId）
   * @returns 删除操作结果
   */
  delete: (id: number) =>
    api.get('/system/theme/del', {
      params: {
        themeId: id,
      },
    }),

  /**
   * 获取单条主题大赛记录详情
   * @param id - 主题记录唯一标识（themeId）
   * @returns 主题详情数据
   */
  detail: (id: number) =>
    api.get<Theme>('/system/theme/getInfo', {
      params: {
        themeId: id,
      },
    }),

  /**
   * 编辑已有主题大赛记录
   * @param data - 需要更新的主题记录数据（含主键）
   * @param data.themeId - 必填，要修改的主题ID
   * @param data.themeName - 必填，修改后的活动名称
   * @param data.activityDescription - 必填，修改后的活动说明
   * @param data.overTime - 必填，修改后的结束时间
   * @returns 更新操作结果
   */
  edit: (data: Theme) =>
    api.post('/system/theme/edit', data),

  /**
   * 获取主题大赛记录列表（分页）
   * @param data - 查询参数
   * @param data.themeName - 可选，按主题名称模糊查询
   * @param data.page - 可选，页码（默认1）
   * @param data.size - 可选，每页条数（默认10）
   * @returns 分页主题列表数据
   */
  list: (data: { themeName?: string, schoolName?: string, themeTitle?: string, page?: number, size?: number, userId?: number }) =>
    api.get<Theme[]>('/system/theme/list', {
      params: {
        themeName: data.themeName,
        schoolName: data.schoolName,
        themeTitle: data.themeTitle,
        pageSize: data.size,
        pageNum: data.page,
        userId: data.userId,
      },
    }),

  /**
   * 上传主题相关图片
   * @param file - 要上传的图片文件
   * @returns 上传结果包含图片URL
   */
  uploadAvatar: (file: any) => api.post(`/common/uploadAvatar`, file, {
    headers: {
      'Content-Type': 'multipart/form-data',
    },
  }),

}
